计算杨辉三角的第n行,第m项数字

这篇博客探讨了在Java中计算杨辉三角第n行第m项时遇到的大数超时问题,提出了解决方案。
摘要由CSDN通过智能技术生成
习题:杨辉三角 
杨辉三角是二项式系数在三角形中的一种几何排列。它的每个数等于它上方两数之和,每行数字左右对称,由1 开始逐渐变大。
         1
        1   1   
      1   2   1   
    1   3   3   1   
  1   4   6   4   1   
1   5   10  10  5   1
请求出杨辉三角的第 n 行,第m 项的数字是什么。
输入格式
第一行输入两个整数 n,m代表行数和列数。(1≤n,m≤50)
输出格式
输出一个整数,代表杨辉三角的第 n 行,第 m 项的数字。
样例输入
6 3
样例输出

10

之前这道题我是用递归做的,但是它一到大数就会超时。

import java.util.Scanner;
public class ex50 {
	static int n,m;
	static int f(int n,int m){
		if(n==m||m==1)
			return 1;
		else
			return f(n-1,m-1)+f(n-1,m);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in=new Scanner(System.in);
		n=in.nextInt();
		m=in.nextInt();
		System.out.println(f(n,m));
	}
}
下面是用递推做的,带大数溜溜的。

<

杨辉三角(Pascal's Triangle)是一种数学上的数字图形,它的每一是二式系数。杨辉三角可以通过递归或者迭代的方式来计算,下面是一个简单的方法来输出杨辉三角第n行第m的数(注意的索引通常从0开始计数): ```java public class YangHuiTriangle { public static void main(String[] args) { int row = 5; // 指定的数,例如第5 int col = 3; // 指定的数,例如第3 // 输出杨辉三角指定的数 System.out.println("杨辉三角第" + row + "行第" + col + "的数是: " + getTriangleValue(row, col)); } // 计算杨辉三角指定的数 public static int getTriangleValue(int row, int col) { // 使用组合数公式C(n, k)来计算,即n! / (k!(n-k)!) // 防止整数溢出,可以使用递归或循环来计算阶乘 return factorial(row) / (factorial(col) * factorial(row - col)); } // 计算阶乘的函数 private static long factorial(int num) { long result = 1; for (int i = 1; i <= num; i++) { result *= i; } return result; } } ``` 以上代码中,我们首先定义了一个主函数`main`来指定输出杨辉三角的哪一和哪一,然后定义了一个`getTriangleValue`函数来计算杨辉三角第`row`行第`col`的数计算的原理是基于组合数学中的组合数公式`C(n, k)`,也就是`n! / (k!(n-k)!)`。为了避免大数的阶乘导致的整数溢出,我们可以使用循环来计算阶乘的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值